const express = require('express')
const bodyParser = require('body-parser')
const fs = require("fs")
const http = require('http')
const cors = require('cors')

const app = express()
app.use(cors())
app.listen(3000)

app.use(express.static('public'))
app.use(bodyParser.urlencoded({ extended: false }))

// 普通字符串
app.get('/msg', (req, res) => {
    const userInfo = {
        userName: "前端老兵",
        age: 18
    }
    res.send(JSON.stringify(userInfo))
})

// 处理 json 数据格式
app.get("/json", (req, res) => {
    res.json({
        userName: "蜡笔小新"
    })
})

// 处理 css 数据传递
app.get("/css", (req, res) => {
    res.end("div{ background: red}")
})


// 处理 js 字符串代码
app.get("/js", (req, res) => {
    // 这里还可以一系列的 后端的操作
    // 读取数据库，读取文件，中间件逻辑（后端代码）
    // JSONP 解决跨域的问题
    const obj = {
        userName: "樱桃小丸子",
        age: 88
    }
    res.end(
        `
            ;(function(){
                return  `+ JSON.stringify(obj) + `  
            })();
        `
    )
})

// 处理 html 数据格式
app.get("/html", (req, res) => {
    res.end("<h2>我是后台给到的结构片段</h2>")
})

// 传输 XML 数据格式
app.get("/xml", (req, res) => {
    res.sendFile(__dirname + '/test.xml')
})


app.post("/register", (req, res) => {
    // 接收post提交的数据
    let { username, password, email } = req.body
    console.log(username, password, email);

    // 读取data.txt
    let data = fs.readFileSync('./data.txt', 'utf-8')
    // 判断文件中是否有内容
    if (data) { // 有内容
        // 将字符串转成数组
        data = JSON.parse(data)
        // 判断是否有当前用户名
        let obj = data.find(item => item.username === username)
        // 判断是否有
        if (obj) {
            // 有
            // ajax只需要一个消息，不需要跳转页面
            res.json({
                error_code: 1,
                msg: '用户名被占用'
            })
            return
        }
    } else { // 没内容
        data = []
    }
    data.push({
        username,
        password,
        email
    })
    // 将data转成字符串写入文件中
    fs.writeFileSync('./data.txt', JSON.stringify(data))
    // 注册成功
    res.json({
        error_code: 0,
        msg: '注册成功'
    })
})
app.post('/login', (req, res) => {
    // 获取用户名和密码
    let { username, password } = req.body
    // 读取data.txt
    let data = fs.readFileSync('./data.txt', 'utf-8')
    // 判断是否有数据
    if (!data) {
        res.json({
            error_code: 1,
            msg: '还未注册'
        })
        return
    }
    // 将字符串转成数组
    data = JSON.parse(data)
    // 根据用户名找到对应的对象数据
    let obj = data.find(item => item.username === username)
    // 判断
    if (obj) {
        // 验证密码
        if (password === obj.password) {
            res.json({
                error_code: 0,
                msg: '登录成功'
            })
            return
        }
        res.json({
            error_code: 2,
            msg: '密码不正确'
        })
    } else {
        res.json({
            error_code: 3,
            msg: '用户名不存在'
        })
    }
})


app.post('/getWeather', (req, res) => {
    let { weatherCode } = req.body
    if (!weatherCode) {
        res.json({
            error_code: 1,
            msg: '数据不能为空'
        })
        return
    }
    http.get(`http://www.weather.com.cn/data/sk/${weatherCode}.html`, info => {
        let str = ''
        info.on('data', chunk => {
            str += chunk.toString()
        })
        info.on('end', () => {
            res.json({
                error_code: 0,
                msg: '数据获取成功',
                data: JSON.parse(str)
            })
        })
    })
})